//
//  Extension+NSDate.swift
//  MyWeibo
//
//  Created by 黄勇锋 on 16/7/26.
//  Copyright © 2016年 黄勇锋. All rights reserved.
//

import UIKit

//缓存数据删除时间
private let deleteTime:Double = -60*6

// 定义一个日历,格式
private let df = NSDateFormatter()
//当前日历
private let calendar = NSCalendar.currentCalendar()

//  在ios开发中 对于 NSDateFormatter 和 NSCalendar.currentCalendar() 当创建或者销毁的时候 特别消耗性能
// 解决方案: swift中创建一个常量 如果在oc中 可以定义一个单例


extension NSDate {
    
    //清理微博缓存时间字符串
    class func sinaDeleteTimeStr() ->String{
        
        let date = NSDate().dateByAddingTimeInterval(deleteTime)
        df.dateFormat = "yyyy-MM-dd HH:mm:ss"
        return df.stringFromDate(date)
    }
    

    // class 自定义类方法
    //获取微博日期
    
    class func sinaDate(createAt:String) ->NSDate?{
        
        //设置时区
        df.locale = NSLocale(localeIdentifier: "en_US")
        //指定格式
        df.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        
        return df.dateFromString(createAt)
    }
    
    //获取微博时间的字符串
    var sinaDescriptionStr:String{
     
        //定义一个属性.来判断是否为今年
        let isThisYear = sinaIsThisYear(self)
        
        //是今年
        if isThisYear{
            
            if calendar.isDateInToday(self) {
                
                //获取当前时间与传入的微博时间的差值
                let s = Int(NSDate().timeIntervalSinceDate(self))
                
                //是今天
                if s < 60 {
                    
                    return "刚刚"
                }else if s > 60 && s < 3600{
                    
                    return "\(s/60)分钟前"
                }else if s > 3600 {
                    
                    return "\(s/3600)小时前"
                }
                
            }else if calendar.isDateInYesterday(self) {
                //昨天
                df.dateFormat = "昨天: HH:mm"
                
            }else {
                
                df.dateFormat = "MM月dd日 HH:mm"
            }
        }else {
            
            //不是今年
            df.dateFormat = "yyyy年MM月dd日 HH:mm"
        }
    
        return df.stringFromDate(self)
    }
    
    //判断微博是否为今年
    func sinaIsThisYear(sinaDate:NSDate) -> Bool{
        
        let df = NSDateFormatter()
        //设置地区
        df.locale = NSLocale(localeIdentifier: "en_US")
        //指定时间格式
        df.dateFormat = "yyyy"
        //获取当前的日期
        let currentDate = NSDate()
        //获取微博日期字符串
        let sinaStr = df.stringFromDate(sinaDate)
        //当前日期字符串
        let currentStr = df.stringFromDate(currentDate)
        
        return currentStr == sinaStr
    }
    
}
